homedir
This crate exists to provide a portable method to getting any user's home
directory. The API is rather simple: there are two main functions,
home
and my_home
. The former can get the home directory
of any user provided you have their username. The latter can get the home
directory of the user executing this process.
If all that is necessary is the home directory of the user executing this process,
then other crates may be better options, such as
directories
. As well, using the home directory to find the
documents, downloads, pictures, etc. directories may not be accurate.
This crate aims to work on both Windows and Unix systems. However,
Unix systems do not have a unified API. This crate may not work
on Unix systems which do not have the getpwnam_r(3)
, getpwuid_r(3)
,
and getuid(2)
functions. As well, special care is necessary for Windows
programs which use the COM library in other places. See the "For Windows Users" section
in the crate documentation for more details.
Usage
This crate is on crates.io and can be used by executing cargo add homedir
or adding the following to the dependencies in your Cargo.toml
file.
[]
= "0.3.4"
Features
windows-coinitialize
-- This is enabled by default. On Windows, callCoInitializeEx
ifCoCreateInstance
returnsCO_E_NOTINITIALIZED
. See the "For Windows Users" section of the documentation for details aboutCoInitializeEx
.
The full documentation of the crate, including examples, is available on the docs.rs page.
Licensing
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Feel free to put a copyright header in your name in any files you contribute to.
Copyright and Credits
Copyright (C) 2023-2024 James Petersen m@jamespetersen.ca.
In version 0.3.0
, the wmi-rs
crate was referenced when writing the
homedir::windows::UserIdentifier::to_home
function, though there may not be any resemblance now. Nevertheless, I felt it was important to properly credit them, hence I included
this statement here. The referenced repository is also licensed under APACHE and MIT, which are included in this repository.